from multiprocessing import Manager, Pool
import time,os
#用进程池自动创建进程，还是写进队列，从队列中读，即用进程池完成进程之间的通信
def writer(q):
    print('写进程{}开始，父进程为{}'.format(os.getpid(),os.getppid()))
    for i in 'jiayou':
        q.put(i)

def reader(q):
    print('读进程{}开始，父进程为{}'.format(os.getpid(),os.getppid()))
    for i in range(q.qsize()):
        # print('从队列中读到{}'.format(q.get()))
        print(q.get(i))


if __name__ == '__main__':
    q=Manager().Queue()
    #pool进程池是自动创建进程
    p=Pool(3)#最大进程数是3，服务员有3个，每次循环将会用空闲出来的子进程去调用目标
    p.apply_async(writer,args=(q,))#要调用的目标，传递给目标的参数元祖
    time.sleep(1)
    p.apply_async(reader,args=(q,))
    p.close()
    p.join()